package modeles;

import donnees.dao.VipDao;
import donnees.modele.Vip;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.AbstractTableModel;

public class ModeleTableVip extends AbstractTableModel {

    private VipDao vip;
    private List<Vip> conteneur;
    private String[] libelles = {"ID", "Nom", "Prénom", "Qualité", "Age", "Nationalité"};

    public ModeleTableVip() {
        this.vip = new VipDao();
        this.conteneur = new ArrayList<>();
        charger();
    }

    private void charger() {
        fireTableRowsDeleted(0, conteneur.size());
        // Signaler à la Jtable que les lignes vont être supprimées pour mise à jour
        conteneur.clear();
        //Vider le conteneur
        List result = null;
        try {
            result = vip.listerVip();
            for (Iterator it = result.iterator(); it.hasNext();) {
                Vip v = (Vip) it.next();
                conteneur.add(v);
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
        fireTableDataChanged();
    }

    public void ajoutVip(Vip v) {
        conteneur.add(v);
        fireTableDataChanged();
    }

    public void supprimerVip(Vip v) {
        conteneur.remove(v);
        fireTableDataChanged();
    }

    @Override
    public int getRowCount() {
        return conteneur.size();
    }

    @Override
    public int getColumnCount() {
        return libelles.length;
    }

    @Override
    public String getColumnName(int column) {
        return libelles[column];
    }

    @Override
    public Object getValueAt(int row, int column) {
        switch (column) {
            case 0:
                return conteneur.get(row).getId();
            case 1:
                return conteneur.get(row).getNom();
            case 2:
                return conteneur.get(row).getPrenom();
            case 3:
                try {
                    return vip.trouverTypeVip(conteneur.get(row)).toUpperCase();
                } catch (Exception e) {
                }
            case 4:
                return conteneur.get(row).getAge();
            case 5:
                return conteneur.get(row).getNationalite();
        }
        return null;
    }
}
